// 1.使用express搭建服务器

// 1.1导入express模块
let express = require('express')

// 1.2创建router对象(路由对象),实际上router是一个函数
let router = express.Router()

// 1.3引入数据库自定义模块
let db = require("../db")

// 1.4引入加密模块
let utility = require('utility')

// 2.根据大事件,设计增删改查接口

// 将接口挂载到router对象上


// 2.0使用express封装好的方法获取客户端提交的请求体，添加上这个方法，所有的设计的接口都有这个方法；


// 一般放在最上面；
// 专门处理所有的post请求有关参数
// 内置方法调用

// 2.1设计接口: 获取用户基本信息
router.get('/userinfo', function (req, res) {
    // 获取当前登录用户的信息  id  id来自token
    // 1. 前面expressJWT中间件负责解密token req.user.userId对象上获取到数据
    console.log(req.user);
    db('select * from user where id=?', req.user.userId, function (err, data) {
        // 3.1读取有问题
        if (err != null) {
            res.send({ // 无需设置请求头和转换为JSON格式
                "status": 1,
                "message": "获取用户基本信息失败！",
            })
        }
        // 3.2读取成功 
        else {
            res.send({
                "status": 0,
                "message": "获取用户基本信息成功！",
                'data': data[0]
            })
        }

    })

})




// 2.2设计接口: 更新用户基本信息
router.post('/userinfo', function (req, res) {

    // 获取数据
    // req.body.id   nickname  email

    // 3.把数据修改
    db('update user set ? where id=?', [req.body, req.body.id], function (err, data) {
        console.log(err);
        if (err != null) {
            res.send({
                "status": 1,
                "message": "修改用户信息失败",

            })
        } else {
            res.send({
                "status": 0,
                "message": "修改用户信息成功"
            });
        }
    })
})

// 2.3设计接口: 重置密码
router.post('/updatepwd', function (req, res) {
    // 1. 获取数据: req.body  oldPwd   newPwd
    req.body.oldPwd = utility.md5(req.body.oldPwd)
    req.body.newPwd = utility.md5(req.body.newPwd)

    // 2.查询数据库
    db('select * from user where password=? and id=?', [req.body.oldPwd, req.user.userId], function (err, data) {

        // 服务器有误
        if (err != null) {
            res.send({
                "status": 1,
                "message": "服务器内部错误",
            })
        }
        // 服务器没问题
        else {

            if (data.length != 0) {
                db('update user set password=? where id=?', [req.body.newPwd, req.user.userId], function (err, data) {
                    if (err != null) {
                        res.send({
                            "status": 1,
                            "message": "修改密码失败",
                        })
                    } else {
                        res.send({
                            "status": 0,
                            "message": "修改密码成功"
                        });
                    }
                })
            } else {

                res.send({
                    "status": 1,
                    "message": "原密码错误"
                });
            }

        }
    })
})


// 2.4设计接口:更换头像
router.post('/update/avatar', function (req, res) {

    // get动态接口获取前端参数 :// req.params-----> // { id: '3' }
    // get普通接口获取前端参数 :req.query
    // post普通接口获取前端参数 : 前提得有2.0条件  req.body  // req.body  ------> { name: '新闻', alias: 'news', Id: '1' }

    // 3.把数据添加到数据库
    db('delete from category where Id = ?', req.params.id, function (err, data) {
        if (err != null) {
            res.send({ // 无需设置请求头和转换为JSON格式
                "status": 1,
                "message": "删除文章分类失败！",
            })
        } else {
            res.send({
                "status": 0,
                "message": "删除文章分类成功！"
            });
        }
    })
})




// 上面知识设计了url后半部分
// 判断头部的部分在路由改造里面
// 导出路由对象
module.exports = router